package com.fen.testdemo.webservice;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.PrefixedQName;
import org.apache.axis.message.SOAPHeaderElement;

import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPException;
import java.net.MalformedURLException;
import java.rmi.RemoteException;

//import com.cezanne.golden.user.Exception;
//import com.cezanne.golden.user.UserManagerServiceProxy;

public class testWebService {
    public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException {

        //标识Web Service的具体路径
        String endpoint = "WebService服务地址";
        // 创建 Service实例
        Service service = new Service();
        // 通过Service实例创建Call的实例
        Call call = (Call) service.createCall();
        //将Web Service的服务路径加入到call实例之中.
        call.setTargetEndpointAddress(new java.net.URL(endpoint));//为Call设置服务的位置
        // 由于需要认证，故需要设置调用的SOAP头信息。
        Name headerName = new PrefixedQName(new QName("发布的wsdl里的targetNamespace里的url", "string_itemName"));
        org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName);
        header.addTextNode("blablabla");
        call.addHeader(header);

//    SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("发布的wsdl里的targetNamespace里的url", "SoapHeader");   
//    soapHeaderElement.setNamespaceURI("发布的wsdl里的targetNamespace里的url");   
//    try  
//    {   
//        soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");   
//    }   
//    catch (SOAPException e)   
//    {   
//        e.printStackTrace();   
//    }   
//    call.addHeader(soapHeaderElement);  
        //调用Web Service的方法
        org.apache.axis.description.OperationDesc oper;
        org.apache.axis.description.ParameterDesc param;
        oper = new org.apache.axis.description.OperationDesc();
        oper.setName("opName");
        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false);
        param.setOmittable(true);
        oper.addParameter(param);
        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg1"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false);
        param.setOmittable(true);
        oper.addParameter(param);
        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg2"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false);
        param.setOmittable(true);
        oper.addParameter(param);
        oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
        oper.setReturnClass(java.lang.String.class);
        oper.setReturnQName(new javax.xml.namespace.QName("", "return"));
        oper.setStyle(org.apache.axis.constants.Style.WRAPPED);
        oper.setUse(org.apache.axis.constants.Use.LITERAL);
        oper.addFault(new org.apache.axis.description.FaultDesc(
                new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"),
                "Exception",
                new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"),
                true
        ));
        call.setOperation(oper);
        call.setOperationName(new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "opName"));
        //调用Web Service,传入参数
        Object[] objects = {};
//      String res = ( String ) call.invoke();
        System.out.println("===============");
        return "";
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            System.out.println(getResult());
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        } catch (ServiceException e) {
            e.printStackTrace();
        } catch (SOAPException e) {
            e.printStackTrace();
        }
    }
}